home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / game / misc / SaveEd.lha / Source / SaveEd.asc < prev    next >
Text File  |  2000-03-13  |  61KB  |  2,652 lines

  1. Set Buffer 500
  2.  
  3.  
  4.  
  5. _VERSION$="$VER=SaveEd 1.02"+Chr$(10)+"© Rune J. Keller 20/02/2000"
  6.  
  7. _DIR$=Dir$
  8.  
  9. _PATH$=_DIR$
  10.  
  11. _PATHMAIN$=_DIR$+"Saves/"
  12.  
  13. _PATHSWAP$=_DIR$+"Saves/"
  14.  
  15. _AUTOCHANGE=0
  16.  
  17.  
  18.  
  19. Dim _OPTION$(47)
  20. Dim _INFO$(47)
  21. Dim _INFOTMP$(15)
  22. Dim _GROUP$(47)
  23. Dim _SUBGROUP$(47)
  24. Dim _ADDRESS(47,15,7)
  25. Dim _LENGTH(47)
  26. Dim _VALUE(47)
  27. Dim _MIN(47)
  28. Dim _MAX(47)
  29. Dim _VALUENAME$(47,255)
  30. Dim _VALUENAMETMP$(255)
  31. Dim _VALUENAMETMP(255)
  32. Dim _PREVALUE(47,15)
  33. Dim _PRESTRING$(47,15)
  34. Dim V(47,15,7,9)
  35. Dim _GROUPS(47)
  36. Dim _SUBGROUPS(47)
  37.  
  38. Dim _OCCURRENCE(255)
  39.  
  40. Global _OPTION$()
  41. Global _INFO$()
  42. Global _INFOTMP$()
  43. Global _GROUP$()
  44. Global _SUBGROUP$()
  45. Global _ADDRESS()
  46. Global _LENGTH()
  47. Global _VALUE()
  48. Global _MIN()
  49. Global _MAX()
  50. Global _VALUENAME$()
  51. Global _VALUENAMETMP$()
  52. Global _VALUENAMETMP()
  53. Global _PREVALUE()
  54. Global _PRESTRING$()
  55. Global V()
  56. Global _GROUPS()
  57. Global _SUBGROUPS()
  58.  
  59. Global _OCCURRENCE()
  60.  
  61. Global _OPTIONS
  62.  
  63.  
  64.  
  65. Gui Amiga 1
  66.  
  67. Amos To Back 
  68.  
  69. Gui Sensitive On 
  70.  
  71. Gui Open 1,1,20
  72.  
  73. Gui Remember On 
  74.  
  75.  
  76.  
  77. Do 
  78.    
  79.    
  80.    
  81.    _ACTION=Gui Wait
  82.    
  83.    _WINDOW=Gui Window
  84.    
  85.    _CODE=Gui Code
  86.    
  87.    _CODE$=Gui Code$
  88.    
  89.    
  90.    
  91.    If _WINDOW=1
  92.       
  93.       If _ACTION=-2
  94.          
  95.          _MENU=Gui Menu(1)
  96.          
  97.          If _MENU=1
  98.             
  99.             _ITEM=Gui Menu(2)
  100.             
  101.             If _ITEM=1
  102.                
  103.                Gosub _OPENMAIN
  104.                
  105.             Else If _ITEM=2
  106.                
  107.                If Length(10)>0
  108.                   
  109.                   Trap Wsave _PATHMAIN$,10
  110.                   
  111.                   If Errtrap>0
  112.                      _ERROR[1,_PATHMAIN$]
  113.                   End If 
  114.                   
  115.                End If 
  116.                
  117.             Else If _ITEM=3
  118.                
  119.                If Length(10)>0
  120.                   
  121.                   _PATHMAIN$=Gui Asl$("Write Main"+Chr$(0),Path$(_PATHMAIN$)+Chr$(0),Filename$(_PATHMAIN$)+Chr$(0),""+Chr$(0))
  122.                   
  123.                   If _PATHMAIN$<>""
  124.                      
  125.                      Trap Wsave _PATHMAIN$,10
  126.                      
  127.                      If Errtrap>0
  128.                         _ERROR[1,_PATHMAIN$]
  129.                      End If 
  130.                      
  131.                   End If 
  132.                End If 
  133.                
  134.             Else If _ITEM=5
  135.                
  136.                Gosub _OPENMAIN
  137.                
  138.             Else If _ITEM=6
  139.                
  140.                If Length(11)>0
  141.                   
  142.                   Trap Wsave _PATHSWAP$,11
  143.                   
  144.                   If Errtrap>0
  145.                      _ERROR[1,_PATHSWAP$]
  146.                   End If 
  147.                   
  148.                End If 
  149.                
  150.             Else If _ITEM=7
  151.                
  152.                If Length(11)>0
  153.                   
  154.                   _PATHSWAP$=Gui Asl$("Write Swap"+Chr$(0),Path$(_PATHSWAP$)+Chr$(0),Filename$(_PATHSWAP$)+Chr$(0),""+Chr$(0))
  155.                   
  156.                   If _PATHSWAP$<>""
  157.                      
  158.                      Trap Wsave _PATHSWAP$,11
  159.                      
  160.                      If Errtrap>0
  161.                         _ERROR[1,_PATHSWAP$]
  162.                      End If 
  163.                      
  164.                   End If 
  165.                   
  166.                End If 
  167.                
  168.             Else If _ITEM=9
  169.                
  170.                _ABOUT
  171.                
  172.             Else If _ITEM=10
  173.                
  174.                Goto _QUIT
  175.                
  176.             End If 
  177.             
  178.          Else If _MENU=2
  179.             
  180.             _ITEM=Gui Menu(2)
  181.             
  182.             If _ITEM=1
  183.                
  184.                Trap Gui Open 2,2,20
  185.                
  186.                If _OPTIONS>0
  187.                   Gui Set 2,0,1,Array(_OPTION$(0))
  188.                End If 
  189.                
  190.             Else If _ITEM=2
  191.                
  192.                Trap Gui Open 3,3,20
  193.                
  194.                If Errtrap=0
  195.                   
  196.                   Gui Set 3,19,-1,1
  197.                   Gui Set 3,19,1,0
  198.                   Gui Set 3,19,2,0
  199.                   Gui Set 3,19,0,0
  200.                   
  201.                End If 
  202.                
  203.             Else If _ITEM=3
  204.                
  205.                Trap Gui Open 4,4,20
  206.                
  207.             End If 
  208.             
  209.          Else If _MENU=3
  210.             
  211.             _ITEM=Gui Menu(2)
  212.  
  213.             If _ITEM=1
  214.  
  215.                Add _AUTOCHANGE,1,0 To 1
  216.  
  217.             End If 
  218.             
  219.          End If 
  220.          
  221.       Else If _ACTION=-1
  222.          
  223.          Goto _QUIT
  224.          
  225.       Else If _ACTION=0
  226.          
  227.          'Main File 
  228.          
  229.          _PATH$=Gui Read$(1,0)
  230.          
  231.       Else If _ACTION=1
  232.          
  233.          'Swap File 
  234.          
  235.          _PATHSWAP$=Gui Read$(1,2)
  236.          
  237.       Else If _ACTION=2
  238.          
  239.          'Open Main 
  240.          
  241.          Gosub _OPENMAIN
  242.          
  243.       Else If _ACTION=3
  244.          
  245.          'Open Swap 
  246.          
  247.          Gosub _OPENSWAP
  248.          
  249.       Else If _ACTION=4
  250.          
  251.          'Options 
  252.          
  253.          Gui Open 2,2,20
  254.          
  255.          Gosub _OPTIONS
  256.          
  257.       Else If _ACTION=6
  258.          
  259.          'Set 
  260.          
  261.          _CHEAT$=Gui Asl$("Set Fileformat"+Chr$(0),Path$(_DIR$+"Cheats/")+Chr$(0),""+Chr$(0),"#?.CHT"+Chr$(0))
  262.          
  263.          If _CHEAT$<>"" and Exist(_CHEAT$)
  264.             
  265.             Wload _CHEAT$,12
  266.             
  267.             _GETOPTIONS[10,12]
  268.             
  269.             _FORMAT$=Param$
  270.             
  271.             Gui Set 1,5,0,Varptr(_FORMAT$)
  272.             
  273.             Gosub _OPTIONS
  274.             
  275.          End If 
  276.          
  277.       Else If _ACTION=7
  278.          
  279.          'Search
  280.          
  281.          _SEARCH=True
  282.          
  283.          Gui Open 3,3,20
  284.          
  285.          Gui Set 3,19,-1,1
  286.          Gui Set 3,19,1,0
  287.          Gui Set 3,19,2,0
  288.          Gui Set 3,19,0,0
  289.          
  290.       Else If _ACTION=8
  291.          
  292.          Trap Gui Open 4,4,20
  293.          
  294.       Else If _ACTION=9
  295.          
  296.          Goto _QUIT
  297.          
  298.       End If 
  299.       
  300.    Else If _WINDOW=2
  301.       
  302.       If _ACTION=-1
  303.          
  304.          _DUMMY=Gui Close(2)
  305.          
  306.       Else If _ACTION=0
  307.          
  308.          'List
  309.          
  310.          _OPTION=_CODE
  311.          
  312.          Gosub _OPTION
  313.          
  314.       Else If _ACTION=1
  315.          
  316.          'String
  317.          
  318.          _INPUT$=Gui Read$(2,1)
  319.          
  320.          If _AUTOCHANGE=1
  321.             Goto _CHANGE
  322.          End If 
  323.          
  324.       Else If _ACTION=2
  325.          
  326.          'Value 
  327.          
  328.          _INPUT=Val(Gui Read$(2,2))
  329.          
  330.          _DUMMY$=""+Chr$(0)
  331.          
  332.          If _INPUT>_MAX(_OPTION)
  333.             
  334.             _INPUT=_MAX(_OPTION)
  335.             
  336.             _ERROR[6,Str$(_INPUT)-" "]
  337.             
  338.             _INPUT$=Str$(_INPUT)-" "+Chr$(0)
  339.             
  340.             Gui Set 2,2,0,Varptr(_INPUT$)
  341.             
  342.          Else If _INPUT<_MIN(_OPTION)
  343.             
  344.             _INPUT=_MIN(_OPTION)
  345.             
  346.             _ERROR[7,Str$(_INPUT)-" "]
  347.             
  348.             _INPUT$=Str$(_INPUT)-" "+Chr$(0)
  349.             
  350.             Gui Set 2,2,0,Varptr(_INPUT$)
  351.             
  352.          End If 
  353.          
  354.          If _INPUT>-1 and _INPUT<256
  355.             If _VALUENAME$(_OPTION,_INPUT)<>""
  356.                Gui Set 2,3,0,Varptr(_VALUENAME$(_OPTION,_INPUT))
  357.             Else 
  358.                Gui Set 2,3,0,Varptr(_DUMMY$)
  359.             End If 
  360.          Else 
  361.             Gui Set 2,3,0,Varptr(_DUMMY$)
  362.          End If 
  363.          
  364.          If _AUTOCHANGE=1
  365.             Goto _CHANGE
  366.          End If 
  367.          
  368.       Else If _ACTION=3
  369.          
  370.          'Option Name 
  371.          
  372.       Else If _ACTION=4
  373.          
  374.          'Group 
  375.          
  376.          _GROUP=_CODE
  377.          
  378.          Gosub _OPTION
  379.          
  380.       Else If _ACTION=5
  381.          
  382.          'Change  
  383.          
  384.          _INPUT$=Gui Read$(2,1)
  385.          
  386.          _INPUT=Val(Gui Read$(2,2))
  387.          
  388.          _CHANGE:
  389.          
  390.          If _VALUE(_OPTION)=1 or _VALUE(_OPTION)=2 or _VALUE(_OPTION)=5
  391.             
  392.             If _VALUE(_OPTION)=5
  393.                
  394.                _VALUE$=Str$(_VALUE)-" "
  395.                
  396.                _VALUE=0
  397.                
  398.                For A=1 To Len(_VALUE$)
  399.                   
  400.                   _VALUE=_VALUE+Val(Mid$(_VALUE$,A,1))*16
  401.                   
  402.                Next 
  403.                
  404.             End If 
  405.             
  406.             If Length(10)>0
  407.                If _LENGTH(_OPTION)=1
  408.                   Poke Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),_INPUT
  409.                Else If _LENGTH(_OPTION)=2
  410.                   Doke Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),_INPUT
  411.                Else If _LENGTH(_OPTION)=4
  412.                   Loke Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),_INPUT
  413.                End If 
  414.             Else 
  415.                _ERROR[3,""]
  416.             End If 
  417.             
  418.          Else If _VALUE(_OPTION)=3 or _VALUE(_OPTION)=4
  419.             
  420.             _STRING$=Left$(_INPUT$+String$(Chr$(0),_LENGTH(_OPTION)),_LENGTH(_OPTION))
  421.             
  422.             If Length(10)>0
  423.                Poke$ Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),_STRING$
  424.             Else 
  425.                _ERROR[3,""]
  426.             End If 
  427.             
  428.          Else If _VALUE(_OPTION)=6
  429.             
  430.             If Length(10)>0
  431.                If _LENGTH(_OPTION)=1
  432.                   Poke Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),_PREVALUE(_OPTION,_INPUT)
  433.                Else If _LENGTH(_OPTION)=2
  434.                   Doke Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),_PREVALUE(_OPTION,_INPUT)
  435.                Else If _LENGTH(_OPTION)=4
  436.                   Loke Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),_PREVALUE(_OPTION,_INPUT)
  437.                End If 
  438.             Else 
  439.                _ERROR[3,""]
  440.             End If 
  441.             
  442.          Else If _VALUE(_OPTION)=7
  443.             
  444.             _STRING$=Left$(_PRESTRING$(_OPTION,_INPUT)+String$(Chr$(0),_LENGTH(_OPTION)),_LENGTH(_OPTION))
  445.             
  446.             If Length(10)>0
  447.                Poke$ Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),_STRING$
  448.             Else 
  449.                _ERROR[3,""]
  450.             End If 
  451.             
  452.          End If 
  453.          
  454.       Else If _ACTION=6
  455.          
  456.          'Reset 
  457.          
  458.          If _VALUE(_OPTION)=1 or _VALUE(_OPTION)=2 or _VALUE(_OPTION)=5 or _VALUE(_OPTION)=6
  459.             
  460.             If _VALUE(_OPTION)=5
  461.                
  462.                _VALUE$=Str$(_VALUE)-" "
  463.                
  464.                _VALUE=0
  465.                
  466.                For A=1 To Len(_VALUE$)
  467.                   
  468.                   _VALUE=_VALUE+Val(Mid$(_VALUE$,A,1))*16
  469.                   
  470.                Next 
  471.                
  472.             End If 
  473.             
  474.             If Length(10)>0 and Length(13)>0
  475.                If _LENGTH(_OPTION)=1
  476.                   Poke Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),Peek(Start(13)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP))
  477.                Else If _LENGTH(_OPTION)=2
  478.                   Doke Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),Deek(Start(13)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP))
  479.                Else If _LENGTH(_OPTION)=4
  480.                   Loke Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),Leek(Start(13)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP))
  481.                End If 
  482.                Gosub _OPTION
  483.             Else 
  484.                _ERROR[3,""]
  485.             End If 
  486.             
  487.          Else If _VALUE(_OPTION)=3 or _VALUE(_OPTION)=4 or _VALUE(_OPTION)=7
  488.             
  489.             _STRING$=Left$(_INPUT$+String$(Chr$(0),_LENGTH(_OPTION)),_LENGTH(_OPTION))
  490.             
  491.             If Length(10)>0 and Length(13)>0
  492.                Poke$ Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),Peek$(Start(13)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),_LENGTH(_OPTION))
  493.                Gosub _OPTION
  494.             Else 
  495.                _ERROR[3,""]
  496.             End If 
  497.             
  498.          End If 
  499.          
  500.       Else If _ACTION=7
  501.          
  502.          'Info
  503.          
  504.       Else If _ACTION=8
  505.          
  506.          'Subgroup
  507.          
  508.          _SUBGROUP=_CODE
  509.          
  510.          Gosub _OPTION
  511.          
  512.       Else If _ACTION=9
  513.          
  514.          'Prevalue
  515.          
  516.          _VALUENAME=_CODE
  517.          
  518.          _INPUT=_VALUENAMETMP(_VALUENAME)
  519.          
  520.          _DUMMY$=Str$(_INPUT)-" "+Chr$(0)
  521.          
  522.          Gui Set 2,2,0,Varptr(_DUMMY$)
  523.          
  524.          Gui Set 2,3,0,Varptr(_VALUENAMETMP$(_VALUENAME))
  525.          
  526.          If _AUTOCHANGE=1
  527.             Goto _CHANGE
  528.          End If 
  529.          
  530.       End If 
  531.       
  532.    Else If _WINDOW=3
  533.       
  534.       If _ACTION=-1
  535.          
  536.          _DUMMY=Gui Close(3)
  537.          
  538.       Else If _ACTION=0
  539.          
  540.          'String
  541.          
  542.          _STRINGMAIN$=Gui Read$(3,0)
  543.          
  544.       Else If _ACTION=1
  545.          
  546.          'Swap String 
  547.          
  548.          _STRINGSWAP$=Gui Read$(3,1)
  549.          
  550.       Else If _ACTION=2
  551.          
  552.          'Value 
  553.          
  554.          _VALUEMAIN=Val(Gui Read$(3,2))
  555.          
  556.       Else If _ACTION=3
  557.          
  558.          'Swap Value  
  559.          
  560.          _VALUESWAP=Val(Gui Read$(3,3))
  561.          
  562.       Else If _ACTION=4
  563.          
  564.          'Search
  565.          
  566.          _STRINGMAIN$=Gui Read$(3,0)
  567.          
  568.          If Length(10)=0
  569.             _ERROR[3,""]
  570.             Goto _LOOP
  571.          End If 
  572.          
  573.          Gui Off 1
  574.          Trap Gui Off 2
  575.          Gui Off 3
  576.          
  577.          _OCCURRENCES=0
  578.          
  579.          _LENGTH=Len(_STRINGMAIN$)
  580.          
  581.          For _ADR=0 To Length(10)-1
  582.             
  583.             If Upper$(Peek$(Start(10)+_ADR,Len(_STRINGMAIN$)))=Upper$(_STRINGMAIN$)
  584.                
  585.                _OCCURRENCE(_OCCURRENCES)=_ADR
  586.                
  587.                Inc _OCCURRENCES
  588.                
  589.                If _OCCURRENCES=256
  590.                   
  591.                   _ERROR[2,""]
  592.                   
  593.                   Exit 
  594.                   
  595.                End If 
  596.                
  597.             End If 
  598.             
  599.          Next 
  600.          
  601.          If _OCCURRENCES=0
  602.             
  603.             Gui Set 3,19,-1,1
  604.             Gui Set 3,19,1,0
  605.             Gui Set 3,19,2,0
  606.             Gui Set 3,19,0,0
  607.             
  608.          Else 
  609.             
  610.             Gui Set 3,19,-1,0
  611.             Gui Set 3,19,1,0
  612.             Gui Set 3,19,2,_OCCURRENCES-1
  613.             Gui Set 3,19,0,0
  614.             
  615.          End If 
  616.          
  617.          Gui On 1
  618.          Trap Gui On 2
  619.          Gui On 3
  620.          
  621.          _OCCURENCE=0
  622.          
  623.          Goto _OCCURRENCE
  624.          
  625.       Else If _ACTION=5
  626.          
  627.          'X-Search
  628.          
  629.          _STRINGMAIN$=Gui Read$(3,0)
  630.          
  631.          _STRINGSWAP$=Gui Read$(3,1)
  632.          
  633.          If Length(10)=0
  634.             _ERROR[3,""]
  635.             Goto _LOOP
  636.          End If 
  637.          
  638.          If Length(11)=0
  639.             _ERROR[4,""]
  640.             Goto _LOOP
  641.          End If 
  642.          
  643.          Gui Off 1
  644.          Trap Gui Off 2
  645.          Gui Off 3
  646.          
  647.          _OCCURRENCES=0
  648.          
  649.          _LENGTH=Len(_STRINGMAIN$)
  650.          
  651.          For _ADR=0 To Length(10)-1
  652.             
  653.             If Upper$(Peek$(Start(10)+_ADR,Len(_STRINGMAIN$)))=Upper$(_STRINGMAIN$) and Upper$(Peek$(Start(11)+_ADR,Len(_STRINGSWAP$)))=Upper$(_STRINGSWAP$)
  654.                
  655.                _OCCURRENCE(_OCCURRENCES)=_ADR
  656.                
  657.                Inc _OCCURRENCES
  658.                
  659.                If _OCCURRENCES=256
  660.                   
  661.                   _ERROR[2,""]
  662.                   
  663.                   Exit 
  664.                   
  665.                End If 
  666.                
  667.             End If 
  668.             
  669.          Next 
  670.          
  671.          If _OCCURRENCES=0
  672.             
  673.             Gui Set 3,19,-1,1
  674.             Gui Set 3,19,1,0
  675.             Gui Set 3,19,2,0
  676.             Gui Set 3,19,0,0
  677.             
  678.          Else 
  679.             
  680.             Gui Set 3,19,-1,0
  681.             Gui Set 3,19,1,0
  682.             Gui Set 3,19,2,_OCCURRENCES-1
  683.             Gui Set 3,19,0,0
  684.             
  685.          End If 
  686.          
  687.          Gui On 1
  688.          Trap Gui On 2
  689.          Gui On 3
  690.          
  691.          _OCCURENCE=0
  692.          
  693.          Goto _OCCURRENCE
  694.          
  695.       Else If _ACTION=6
  696.          
  697.          'Byte
  698.          
  699.          _VALUEMAIN=Val(Gui Read$(3,2))
  700.          
  701.          If Length(10)=0
  702.             _ERROR[3,""]
  703.             Goto _LOOP
  704.          End If 
  705.          
  706.          If _VALUEMAIN>255 or _VALUEMAIN<-127
  707.             
  708.             _ERROR[5,""]
  709.             
  710.             If Param=0
  711.                Goto _LOOP
  712.             End If 
  713.             
  714.          End If 
  715.          
  716.          Gui Off 1
  717.          Trap Gui Off 2
  718.          Gui Off 3
  719.          
  720.          _OCCURRENCES=0
  721.          
  722.          _LENGTH=1
  723.          
  724.          For _ADR=0 To Length(10)-1
  725.             
  726.             If Peek(Start(10)+_ADR)=_VALUEMAIN
  727.                
  728.                _OCCURRENCE(_OCCURRENCES)=_ADR
  729.                
  730.                Inc _OCCURRENCES
  731.                
  732.                If _OCCURRENCES=256
  733.                   
  734.                   _ERROR[2,""]
  735.                   
  736.                   Exit 
  737.                   
  738.                End If 
  739.                
  740.             End If 
  741.             
  742.          Next 
  743.          
  744.          If _OCCURRENCES=0
  745.             
  746.             Gui Set 3,19,-1,1
  747.             Gui Set 3,19,1,0
  748.             Gui Set 3,19,2,0
  749.             Gui Set 3,19,0,0
  750.             
  751.          Else 
  752.             
  753.             Gui Set 3,19,-1,0
  754.             Gui Set 3,19,1,0
  755.             Gui Set 3,19,2,_OCCURRENCES-1
  756.             Gui Set 3,19,0,0
  757.             
  758.          End If 
  759.          
  760.          Gui On 1
  761.          Trap Gui On 2
  762.          Gui On 3
  763.          
  764.          _OCCURENCE=0
  765.          
  766.          Goto _OCCURRENCE
  767.          
  768.       Else If _ACTION=7
  769.          
  770.          'Word
  771.          
  772.          _VALUEMAIN=Val(Gui Read$(3,2))
  773.          
  774.          If Length(10)=0
  775.             _ERROR[3,""]
  776.             Goto _LOOP
  777.          End If 
  778.          
  779.          If _VALUEMAIN>65535 or _VALUEMAIN<-32767
  780.             
  781.             _ERROR[5,""]
  782.             
  783.             If Param=0
  784.                Goto _LOOP
  785.             End If 
  786.             
  787.          End If 
  788.          
  789.          Gui Off 1
  790.          Trap Gui Off 2
  791.          Gui Off 3
  792.          
  793.          _OCCURRENCES=0
  794.          
  795.          _LENGTH=2
  796.          
  797.          For _ADR=0 To Length(10)-1
  798.             
  799.             If Deek(Start(10)+_ADR)=_VALUEMAIN
  800.                
  801.                _OCCURRENCE(_OCCURRENCES)=_ADR
  802.                
  803.                Inc _OCCURRENCES
  804.                
  805.                If _OCCURRENCES=256
  806.                   
  807.                   _ERROR[2,""]
  808.                   
  809.                   Exit 
  810.                   
  811.                End If 
  812.                
  813.             End If 
  814.             
  815.          Next 
  816.          
  817.          If _OCCURRENCES=0
  818.             
  819.             Gui Set 3,19,-1,1
  820.             Gui Set 3,19,1,0
  821.             Gui Set 3,19,2,0
  822.             Gui Set 3,19,0,0
  823.             
  824.          Else 
  825.             
  826.             Gui Set 3,19,-1,0
  827.             Gui Set 3,19,1,0
  828.             Gui Set 3,19,2,_OCCURRENCES-1
  829.             Gui Set 3,19,0,0
  830.             
  831.          End If 
  832.          
  833.          Gui On 1
  834.          Trap Gui On 2
  835.          Gui On 3
  836.          
  837.          _OCCURENCE=0
  838.          
  839.          Goto _OCCURRENCE
  840.          
  841.       Else If _ACTION=8
  842.          
  843.          'Long
  844.          
  845.          _VALUEMAIN=Val(Gui Read$(3,2))
  846.          
  847.          If Length(10)=0
  848.             _ERROR[3,""]
  849.             Goto _LOOP
  850.          End If 
  851.          
  852.          Gui Off 1
  853.          Trap Gui Off 2
  854.          Gui Off 3
  855.          
  856.          _OCCURRENCES=0
  857.          
  858.          _LENGTH=4
  859.          
  860.          For _ADR=0 To Length(10)-1
  861.             
  862.             If Leek(Start(10)+_ADR)=_VALUEMAIN
  863.                
  864.                _OCCURRENCE(_OCCURRENCES)=_ADR
  865.                
  866.                Inc _OCCURRENCES
  867.                
  868.                If _OCCURRENCES=256
  869.                   
  870.                   _ERROR[2,""]
  871.                   
  872.                   Exit 
  873.                   
  874.                End If 
  875.                
  876.             End If 
  877.             
  878.          Next 
  879.          
  880.          If _OCCURRENCES=0
  881.             
  882.             Gui Set 3,19,-1,1
  883.             Gui Set 3,19,1,0
  884.             Gui Set 3,19,2,0
  885.             Gui Set 3,19,0,0
  886.             
  887.          Else 
  888.             
  889.             Gui Set 3,19,-1,0
  890.             Gui Set 3,19,1,0
  891.             Gui Set 3,19,2,_OCCURRENCES-1
  892.             Gui Set 3,19,0,0
  893.             
  894.          End If 
  895.          
  896.          Gui On 1
  897.          Trap Gui On 2
  898.          Gui On 3
  899.          
  900.          _OCCURENCE=0
  901.          
  902.          Goto _OCCURRENCE
  903.          
  904.       Else If _ACTION=9
  905.          
  906.          'X-Byte
  907.          
  908.          _VALUEMAIN=Val(Gui Read$(3,2))
  909.          
  910.          _VALUESWAP=Val(Gui Read$(3,3))
  911.          
  912.          If Length(10)=0
  913.             _ERROR[3,""]
  914.             Goto _LOOP
  915.          End If 
  916.          
  917.          If Length(11)=0
  918.             _ERROR[4,""]
  919.             Goto _LOOP
  920.          End If 
  921.          
  922.          If _VALUEMAIN>255 or _VALUEMAIN<-127 or _VALUESWAP>255 or _VALUESWAP<-127
  923.             
  924.             _ERROR[5,""]
  925.             
  926.             If Param=0
  927.                Goto _LOOP
  928.             End If 
  929.             
  930.          End If 
  931.          
  932.          Gui Off 1
  933.          Trap Gui Off 2
  934.          Gui Off 3
  935.          
  936.          _OCCURRENCES=0
  937.          
  938.          _LENGTH=1
  939.          
  940.          For _ADR=0 To Length(10)-1
  941.             
  942.             If Peek(Start(10)+_ADR)=_VALUEMAIN and Peek(Start(11)+_ADR)=_VALUESWAP
  943.                
  944.                _OCCURRENCE(_OCCURRENCES)=_ADR
  945.                
  946.                Inc _OCCURRENCES
  947.                
  948.                If _OCCURRENCES=256
  949.                   
  950.                   _ERROR[2,""]
  951.                   
  952.                   Exit 
  953.                   
  954.                End If 
  955.                
  956.             End If 
  957.             
  958.          Next 
  959.          
  960.          If _OCCURRENCES=0
  961.             
  962.             Gui Set 3,19,-1,1
  963.             Gui Set 3,19,1,0
  964.             Gui Set 3,19,2,0
  965.             Gui Set 3,19,0,0
  966.             
  967.          Else 
  968.             
  969.             Gui Set 3,19,-1,0
  970.             Gui Set 3,19,1,0
  971.             Gui Set 3,19,2,_OCCURRENCES-1
  972.             Gui Set 3,19,0,0
  973.             
  974.          End If 
  975.          
  976.          Gui On 1
  977.          Trap Gui On 2
  978.          Gui On 3
  979.          
  980.          _OCCURENCE=0
  981.          
  982.          Goto _OCCURRENCE
  983.          
  984.       Else If _ACTION=10
  985.          
  986.          'X-Word
  987.          
  988.          _VALUEMAIN=Val(Gui Read$(3,2))
  989.          
  990.          _VALUESWAP=Val(Gui Read$(3,3))
  991.          
  992.          If Length(10)=0
  993.             _ERROR[3,""]
  994.             Goto _LOOP
  995.          End If 
  996.          
  997.          If Length(11)=0
  998.             _ERROR[4,""]
  999.             Goto _LOOP
  1000.          End If 
  1001.          
  1002.          If _VALUEMAIN>65535 or _VALUEMAIN<-32767 or _VALUESWAP>65535 or _VALUESWAP<-32767
  1003.             
  1004.             _ERROR[5,""]
  1005.             
  1006.             If Param=0
  1007.                Goto _LOOP
  1008.             End If 
  1009.             
  1010.          End If 
  1011.          
  1012.          Gui Off 1
  1013.          Trap Gui Off 2
  1014.          Gui Off 3
  1015.          
  1016.          _OCCURRENCES=0
  1017.          
  1018.          _LENGTH=2
  1019.          
  1020.          For _ADR=0 To Length(10)-1
  1021.             
  1022.             If Deek(Start(10)+_ADR)=_VALUEMAIN and Deek(Start(11)+_ADR)=_VALUESWAP
  1023.                
  1024.                _OCCURRENCE(_OCCURRENCES)=_ADR
  1025.                
  1026.                Inc _OCCURRENCES
  1027.                
  1028.                If _OCCURRENCES=256
  1029.                   
  1030.                   _ERROR[2,""]
  1031.                   
  1032.                   Exit 
  1033.                   
  1034.                End If 
  1035.                
  1036.             End If 
  1037.             
  1038.          Next 
  1039.          
  1040.          If _OCCURRENCES=0
  1041.             
  1042.             Gui Set 3,19,-1,1
  1043.             Gui Set 3,19,1,0
  1044.             Gui Set 3,19,2,0
  1045.             Gui Set 3,19,0,0
  1046.             
  1047.          Else 
  1048.             
  1049.             Gui Set 3,19,-1,0
  1050.             Gui Set 3,19,1,0
  1051.             Gui Set 3,19,2,_OCCURRENCES-1
  1052.             Gui Set 3,19,0,0
  1053.             
  1054.          End If 
  1055.          
  1056.          Gui On 1
  1057.          Trap Gui On 2
  1058.          Gui On 3
  1059.          
  1060.          _OCCURENCE=0
  1061.          
  1062.          Goto _OCCURRENCE
  1063.          
  1064.       Else If _ACTION=11
  1065.          
  1066.          'X-Long
  1067.          
  1068.          _VALUEMAIN=Val(Gui Read$(3,2))
  1069.          
  1070.          _VALUESWAP=Val(Gui Read$(3,3))
  1071.          
  1072.          If Length(10)=0
  1073.             _ERROR[3,""]
  1074.             Goto _LOOP
  1075.          End If 
  1076.          
  1077.          If Length(11)=0
  1078.             _ERROR[4,""]
  1079.             Goto _LOOP
  1080.          End If 
  1081.          
  1082.          Gui Off 1
  1083.          Trap Gui Off 2
  1084.          Gui Off 3
  1085.          
  1086.          _OCCURRENCES=0
  1087.          
  1088.          _LENGTH=4
  1089.          
  1090.          For _ADR=0 To Length(10)-1
  1091.             
  1092.             If Leek(Start(10)+_ADR)=_VALUEMAIN and Leek(Start(11)+_ADR)=_VALUESWAP
  1093.                
  1094.                _OCCURRENCE(_OCCURRENCES)=_ADR
  1095.                
  1096.                Inc _OCCURRENCES
  1097.                
  1098.                If _OCCURRENCES=256
  1099.                   
  1100.                   _ERROR[2,""]
  1101.                   
  1102.                   Exit 
  1103.                   
  1104.                End If 
  1105.                
  1106.             End If 
  1107.             
  1108.          Next 
  1109.          
  1110.          If _OCCURRENCES=0
  1111.             
  1112.             Gui Set 3,19,-1,1
  1113.             Gui Set 3,19,1,0
  1114.             Gui Set 3,19,2,0
  1115.             Gui Set 3,19,0,0
  1116.             
  1117.          Else 
  1118.             
  1119.             Gui Set 3,19,-1,0
  1120.             Gui Set 3,19,1,0
  1121.             Gui Set 3,19,2,_OCCURRENCES-1
  1122.             Gui Set 3,19,0,0
  1123.             
  1124.          End If 
  1125.          
  1126.          Gui On 1
  1127.          Trap Gui On 2
  1128.          Gui On 3
  1129.          
  1130.          _OCCURENCE=0
  1131.          
  1132.          Goto _OCCURRENCE
  1133.          
  1134.       Else If _ACTION=12
  1135.          
  1136.          '(Poke) String 
  1137.          
  1138.          _STRINGPOKE$=Gui Read$(3,12)
  1139.          
  1140.       Else If _ACTION=13
  1141.          
  1142.          'Length
  1143.          
  1144.          _LENGTHPOKE=Val(Gui Read$(3,13))
  1145.          
  1146.       Else If _ACTION=14
  1147.          
  1148.          'Poke (String) 
  1149.          
  1150.          _STRINGPOKE$=Gui Read$(3,12)
  1151.          
  1152.          _LENGTHPOKE=Val(Gui Read$(3,13))
  1153.          
  1154.          _STRING$=Left$(_STRINGPOKE$+String$(Chr$(0),_LENGTHPOKE),_LENGTHPOKE)
  1155.          
  1156.          Poke$ Start(10)+_ADDRESSPOKE,_STRING$
  1157.          
  1158.       Else If _ACTION=15
  1159.          
  1160.          '(Poke) Value
  1161.          
  1162.          _VALUEPOKE=Val(Gui Read$(3,15))
  1163.          
  1164.       Else If _ACTION=16
  1165.          
  1166.          'Poke (Value)
  1167.          
  1168.          _ADDRESSPOKE=Val(Gui Read$(3,20))
  1169.          
  1170.          _VALUEPOKE=Val(Gui Read$(3,15))
  1171.          
  1172.          Poke Start(10)+_ADDRESSPOKE,_VALUEPOKE
  1173.          
  1174.       Else If _ACTION=17
  1175.          
  1176.          'Doke (Value)  
  1177.          
  1178.          _ADDRESSPOKE=Val(Gui Read$(3,20))
  1179.          
  1180.          _VALUEPOKE=Val(Gui Read$(3,15))
  1181.          
  1182.          Doke Start(10)+_ADDRESSPOKE,_VALUEPOKE
  1183.          
  1184.       Else If _ACTION=18
  1185.          
  1186.          'Loke (Value)
  1187.          
  1188.          _ADDRESSPOKE=Val(Gui Read$(3,20))
  1189.          
  1190.          _VALUEPOKE=Val(Gui Read$(3,15))
  1191.          
  1192.          Loke Start(10)+_ADDRESSPOKE,_VALUEPOKE
  1193.          
  1194.       Else If _ACTION=19
  1195.          
  1196.          'Occurence 
  1197.          
  1198.          _OCCURRENCE=_CODE
  1199.          
  1200.          _OCCURRENCE:
  1201.          
  1202.          _ADDRESSPOKE=_OCCURRENCE(_OCCURRENCE)
  1203.          
  1204.          _ADDRESSPOKE$=Str$(_ADDRESSPOKE)-" "+Chr$(0)
  1205.          
  1206.          Gui Set 3,20,0,Varptr(_ADDRESSPOKE$)
  1207.          
  1208.          If _LENGTH=1
  1209.             
  1210.             _STRING$=Peek$(Start(10)+_ADDRESSPOKE,1)+Chr$(0)
  1211.             
  1212.             _VALUE$=Str$(Peek(Start(10)+_ADDRESSPOKE))-" "+Chr$(0)
  1213.             
  1214.          Else If _LENGTH=2
  1215.             
  1216.             _STRING$=Peek$(Start(10)+_ADDRESSPOKE,2)+Chr$(0)
  1217.             
  1218.             _VALUE$=Str$(Deek(Start(10)+_ADDRESSPOKE))-" "+Chr$(0)
  1219.             
  1220.          Else If _LENGTH=4
  1221.             
  1222.             _STRING$=Peek$(Start(10)+_ADDRESSPOKE,4)+Chr$(0)
  1223.             
  1224.             _VALUE$=Str$(Leek(Start(10)+_ADDRESSPOKE))-" "+Chr$(0)
  1225.             
  1226.          Else 
  1227.             
  1228.             _STRING$=Peek$(Start(10)+_ADDRESSPOKE,_LENGTH)+Chr$(0)
  1229.             
  1230.             _VALUE$="-"+Chr$(0)
  1231.             
  1232.          End If 
  1233.          
  1234.          Gui Set 3,12,0,Varptr(_STRING$)
  1235.          
  1236.          Gui Set 3,15,0,Varptr(_VALUE$)
  1237.          
  1238.       Else If _ACTION=20
  1239.          
  1240.          'Address 
  1241.          
  1242.          _ADDRESSPOKE=Val(Gui Read$(3,20))
  1243.          
  1244.       Else If _ACTION=21
  1245.          
  1246.          'Step
  1247.          
  1248.          _VALUESTEP=Val(Gui Read$(3,21))
  1249.          
  1250.       Else If _ACTION=22
  1251.          
  1252.          'S-Byte
  1253.          
  1254.          _VALUEMAIN=Val(Gui Read$(3,2))
  1255.          
  1256.          _VALUESWAP=Val(Gui Read$(3,3))
  1257.          
  1258.          _VALUESTEP=Val(Gui Read$(3,21))
  1259.          
  1260.          If Length(10)=0
  1261.             _ERROR[3,""]
  1262.             Goto _LOOP
  1263.          End If 
  1264.          
  1265.          If _VALUEMAIN>255 or _VALUEMAIN<-127
  1266.             
  1267.             _ERROR[5,""]
  1268.             
  1269.             If Param=0
  1270.                Goto _LOOP
  1271.             End If 
  1272.             
  1273.          End If 
  1274.          
  1275.          Gui Off 1
  1276.          Trap Gui Off 2
  1277.          Gui Off 3
  1278.          
  1279.          _OCCURRENCES=0
  1280.          
  1281.          _LENGTH=1
  1282.          
  1283.          For _ADR=0 To Length(10)-1
  1284.             
  1285.             If Peek(Start(10)+_ADR)=_VALUEMAIN
  1286.                
  1287.                _TMPSTEP=1
  1288.                
  1289.                While _ADR+_TMPSTEP*_VALUESTEP<Length(10)
  1290.                   
  1291.                   If Peek(Start(10)+_ADR+_TMPSTEP*_VALUESTEP)=_VALUESWAP
  1292.                      
  1293.                      _OCCURRENCE(_OCCURRENCES)=_ADR
  1294.                      
  1295.                      Inc _OCCURRENCES
  1296.                      
  1297.                      If _OCCURRENCES=256
  1298.                         
  1299.                         _ERROR[2,""]
  1300.                         
  1301.                         Exit 
  1302.                         
  1303.                      End If 
  1304.                      
  1305.                      Exit 
  1306.                      
  1307.                   End If 
  1308.                   
  1309.                   Inc _TMPSTEP
  1310.                   
  1311.                Wend 
  1312.                
  1313.             End If 
  1314.             
  1315.          Next 
  1316.          
  1317.          If _OCCURRENCES=0
  1318.             
  1319.             Gui Set 3,19,-1,1
  1320.             Gui Set 3,19,1,0
  1321.             Gui Set 3,19,2,0
  1322.             Gui Set 3,19,0,0
  1323.             
  1324.          Else 
  1325.             
  1326.             Gui Set 3,19,-1,0
  1327.             Gui Set 3,19,1,0
  1328.             Gui Set 3,19,2,_OCCURRENCES-1
  1329.             Gui Set 3,19,0,0
  1330.             
  1331.          End If 
  1332.          
  1333.          Gui On 1
  1334.          Trap Gui On 2
  1335.          Gui On 3
  1336.          
  1337.          _OCCURENCE=0
  1338.          
  1339.          Goto _OCCURRENCE
  1340.          
  1341.       Else If _ACTION=23
  1342.          
  1343.          'S-Word
  1344.          
  1345.          _VALUEMAIN=Val(Gui Read$(3,2))
  1346.          
  1347.          _VALUESWAP=Val(Gui Read$(3,3))
  1348.          
  1349.          _VALUESTEP=Val(Gui Read$(3,21))
  1350.          
  1351.          If Length(10)=0
  1352.             _ERROR[3,""]
  1353.             Goto _LOOP
  1354.          End If 
  1355.          
  1356.          If _VALUEMAIN>65535 or _VALUEMAIN<-32767
  1357.             
  1358.             _ERROR[5,""]
  1359.             
  1360.             If Param=0
  1361.                Goto _LOOP
  1362.             End If 
  1363.             
  1364.          End If 
  1365.          
  1366.          Gui Off 1
  1367.          Trap Gui Off 2
  1368.          Gui Off 3
  1369.          
  1370.          _OCCURRENCES=0
  1371.          
  1372.          _LENGTH=2
  1373.          
  1374.          For _ADR=0 To Length(10)-1
  1375.             
  1376.             If Deek(Start(10)+_ADR)=_VALUEMAIN
  1377.                
  1378.                _TMPSTEP=1
  1379.                
  1380.                While _ADR+_TMPSTEP*_VALUESTEP<Length(10)
  1381.                   
  1382.                   If Deek(Start(10)+_ADR+_TMPSTEP*_VALUESTEP)=_VALUESWAP
  1383.                      
  1384.                      _OCCURRENCE(_OCCURRENCES)=_ADR
  1385.                      
  1386.                      Inc _OCCURRENCES
  1387.                      
  1388.                      If _OCCURRENCES=256
  1389.                         
  1390.                         _ERROR[2,""]
  1391.                         
  1392.                         Exit 
  1393.                         
  1394.                      End If 
  1395.                      
  1396.                      Exit 
  1397.                      
  1398.                   End If 
  1399.                   
  1400.                   Inc _TMPSTEP
  1401.                   
  1402.                Wend 
  1403.                
  1404.             End If 
  1405.             
  1406.          Next 
  1407.          
  1408.          If _OCCURRENCES=0
  1409.             
  1410.             Gui Set 3,19,-1,1
  1411.             Gui Set 3,19,1,0
  1412.             Gui Set 3,19,2,0
  1413.             Gui Set 3,19,0,0
  1414.             
  1415.          Else 
  1416.             
  1417.             Gui Set 3,19,-1,0
  1418.             Gui Set 3,19,1,0
  1419.             Gui Set 3,19,2,_OCCURRENCES-1
  1420.             Gui Set 3,19,0,0
  1421.             
  1422.          End If 
  1423.          
  1424.          Gui On 1
  1425.          Trap Gui On 2
  1426.          Gui On 3
  1427.          
  1428.          _OCCURENCE=0
  1429.          
  1430.          Goto _OCCURRENCE
  1431.          
  1432.       Else If _ACTION=24
  1433.          
  1434.          'S-Long
  1435.          
  1436.          _VALUEMAIN=Val(Gui Read$(3,2))
  1437.          
  1438.          _VALUESWAP=Val(Gui Read$(3,3))
  1439.          
  1440.          _VALUESTEP=Val(Gui Read$(3,21))
  1441.          
  1442.          If Length(10)=0
  1443.             _ERROR[3,""]
  1444.             Goto _LOOP
  1445.          End If 
  1446.          
  1447.          Gui Off 1
  1448.          Trap Gui Off 2
  1449.          Gui Off 3
  1450.          
  1451.          _OCCURRENCES=0
  1452.          
  1453.          _LENGTH=4
  1454.          
  1455.          For _ADR=0 To Length(10)-1
  1456.             
  1457.             If Leek(Start(10)+_ADR)=_VALUEMAIN
  1458.                
  1459.                _TMPSTEP=1
  1460.                
  1461.                While _ADR+_TMPSTEP*_VALUESTEP<Length(10)
  1462.                   
  1463.                   If Leek(Start(10)+_ADR+_TMPSTEP*_VALUESTEP)=_VALUESWAP
  1464.                      
  1465.                      _OCCURRENCE(_OCCURRENCES)=_ADR
  1466.                      
  1467.                      Inc _OCCURRENCES
  1468.                      
  1469.                      If _OCCURRENCES=256
  1470.                         
  1471.                         _ERROR[2,""]
  1472.                         
  1473.                         Exit 
  1474.                         
  1475.                      End If 
  1476.                      
  1477.                      Exit 
  1478.                      
  1479.                   End If 
  1480.                   
  1481.                   Inc _TMPSTEP
  1482.                   
  1483.                Wend 
  1484.                
  1485.             End If 
  1486.             
  1487.          Next 
  1488.          
  1489.          If _OCCURRENCES=0
  1490.             
  1491.             Gui Set 3,19,-1,1
  1492.             Gui Set 3,19,1,0
  1493.             Gui Set 3,19,2,0
  1494.             Gui Set 3,19,0,0
  1495.             
  1496.          Else 
  1497.             
  1498.             Gui Set 3,19,-1,0
  1499.             Gui Set 3,19,1,0
  1500.             Gui Set 3,19,2,_OCCURRENCES-1
  1501.             Gui Set 3,19,0,0
  1502.             
  1503.          End If 
  1504.          
  1505.          Gui On 1
  1506.          Trap Gui On 2
  1507.          Gui On 3
  1508.          
  1509.          _OCCURENCE=0
  1510.          
  1511.          Goto _OCCURRENCE
  1512.          
  1513.       End If 
  1514.       
  1515.    Else If _WINDOW=4
  1516.       
  1517.       If _ACTION=-1
  1518.          
  1519.          _DUMMY=Gui Close(4)
  1520.          
  1521.       Else If _ACTION=0
  1522.          
  1523.       Else If _ACTION=1
  1524.          
  1525.       Else If _ACTION=2
  1526.          
  1527.          'Address 
  1528.          
  1529.          _ADDRESS=Val(Gui Read$(4,2))
  1530.          
  1531.          If _ADDRESS<0
  1532.             _ADDRESS=0
  1533.          Else If _ADDRESS>Length(10)-1
  1534.             _ADDRESS=Length(10)-1
  1535.          End If 
  1536.          
  1537.          _DISPLAY:
  1538.          
  1539.          Gui Gfx 0,4
  1540.          
  1541.          _TMPADR=_ADDRESS-_ADDRESS mod 8
  1542.          
  1543.          For _LINE=-4 To 4
  1544.             
  1545.             _TEXT$=Right$("00000"+Hex$(_TMPADR+_LINE*8)-"$",5)+": "
  1546.             
  1547.             Gui Text 20,110+_LINE*16,_TEXT$
  1548.             
  1549.             For B=0 To 7
  1550.                
  1551.                P=Peek(Start(10)+_TMPADR+_LINE*8+B)
  1552.                
  1553.                If _TMPADR+_LINE*8+B=_ADDRESS
  1554.                   
  1555.                   Gui Paper 1
  1556.                   Gui Pen 0
  1557.                   
  1558.                   P$=Str$(P)-" "+Chr$(0)
  1559.                   Gui Set 4,3,0,Varptr(P$)
  1560.                   
  1561.                Else 
  1562.                   
  1563.                   Gui Paper 0
  1564.                   Gui Pen 1
  1565.                   
  1566.                End If 
  1567.                
  1568.                _TEXT$=Right$("00"+Hex$(P)-"$",2)+" "
  1569.                
  1570.                If _TMPADR+_LINE*8+B<0 or _TMPADR+_LINE*8+B>Length(10)-1
  1571.                   Gui Text 64+B*19,110+_LINE*16," "
  1572.                Else 
  1573.                   Gui Text 64+B*19,110+_LINE*16,_TEXT$
  1574.                End If 
  1575.                
  1576.                If P<32
  1577.                   _TEXT$="_"
  1578.                Else 
  1579.                   _TEXT$=Chr$(P)
  1580.                End If 
  1581.                
  1582.                If _TMPADR+_LINE*8+B<0 or _TMPADR+_LINE*8+B>Length(10)-1
  1583.                   Gui Text 232+B*10,110+_LINE*16," "
  1584.                Else 
  1585.                   Gui Text 232+B*10,110+_LINE*16,_TEXT$
  1586.                End If 
  1587.                
  1588.             Next 
  1589.             
  1590.          Next 
  1591.          
  1592.       Else If _ACTION=3
  1593.          
  1594.          'Value 
  1595.          
  1596.          _INPUT2=Val(Gui Read$(4,3))
  1597.          
  1598.       Else If _ACTION=4
  1599.          
  1600.          _INPUT2=Val(Gui Read$(4,3))
  1601.          
  1602.          If _INPUT2>255 or _INPUT2<-127
  1603.             
  1604.             _ERROR[5,""]
  1605.             
  1606.             If Param=0
  1607.                Goto _LOOP
  1608.             End If 
  1609.             
  1610.          End If 
  1611.          
  1612.          Poke Start(10)+_ADDRESS,_INPUT2
  1613.          
  1614.          Goto _DISPLAY
  1615.          
  1616.       End If 
  1617.       
  1618.    End If 
  1619.    
  1620.    
  1621.    
  1622.    _LOOP:
  1623.    
  1624.    
  1625.    
  1626. Loop 
  1627.  
  1628.  
  1629.  
  1630. _OPENMAIN:
  1631.  
  1632. _PATHMAIN$=Gui Asl$("Open Main"+Chr$(0),Path$(_PATHMAIN$)+Chr$(0),Filename$(_PATHMAIN$)+Chr$(0),""+Chr$(0))
  1633.  
  1634. If _PATHMAIN$<>"" and Exist(_PATHMAIN$)
  1635.    
  1636.    Open In 1,_PATHMAIN$
  1637.    _LOF=Lof(1)
  1638.    Close 1
  1639.    
  1640.    If _LOF=0
  1641.       
  1642.       _ERROR[9,_PATHMAIN$]
  1643.       
  1644.    Else 
  1645.       
  1646.       For _OPTION=0 To _OPTIONS-1
  1647.          
  1648.          _OPTION$(_OPTION)=""
  1649.          
  1650.       Next 
  1651.       
  1652.       _OPTIONS=0
  1653.       
  1654.       _GROUPS(0)=0
  1655.       
  1656.       _GROUP=0
  1657.       
  1658.       _SUBGROUPS(0)=0
  1659.       
  1660.       _SUBGROUP=0
  1661.       
  1662.       Wload _PATHMAIN$,10
  1663.       
  1664.       ' make a backup of the file
  1665.       
  1666.       Reserve As Data 13,Length(10)
  1667.       
  1668.       Copy Start(10),Start(10)+Length(10) To Start(13)
  1669.       
  1670.       Gui Set 1,0,0,Varptr(_PATHMAIN$)
  1671.       
  1672.       _FILE$=Filename$(_PATHMAIN$)
  1673.       
  1674.       _CHECKFILE[10,12]
  1675.       
  1676.       _FORMAT$=Param$
  1677.       
  1678.       Gui Set 1,5,0,Varptr(_FORMAT$)
  1679.       
  1680.       _GETOPTIONS[10,12]
  1681.       
  1682.       Gosub _OPTIONS
  1683.       
  1684.    End If 
  1685.    
  1686. End If 
  1687.  
  1688. Return 
  1689.  
  1690.  
  1691.  
  1692.  
  1693. _OPENSWAP:
  1694.  
  1695. _PATHSWAP$=Gui Asl$("Open Swap"+Chr$(0),Path$(_PATHSWAP$)+Chr$(0),Filename$(_PATHSWAP$)+Chr$(0),""+Chr$(0))
  1696.  
  1697. If _PATHSWAP$<>"" and Exist(_PATHSWAP$)
  1698.    
  1699.    Open In 1,_PATHSWAP$
  1700.    _LOF=Lof(1)
  1701.    Close 1
  1702.    
  1703.    If _LOF=0
  1704.       
  1705.       _ERROR[9,_PATHSWAP$]
  1706.       
  1707.    Else 
  1708.       
  1709.       Wload _PATHSWAP$,11
  1710.       
  1711.       Gui Set 1,1,0,Varptr(_PATHSWAP$)
  1712.       
  1713.    End If 
  1714.    
  1715. End If 
  1716.  
  1717. Return 
  1718.  
  1719.  
  1720.  
  1721. _OPTIONS:
  1722.  
  1723. If Gui Exist(2)
  1724.    
  1725.    Gui Set 2,0,1,Array(_OPTION$(0))
  1726.    
  1727.    _OPTION=0
  1728.    
  1729.    Gosub _OPTION
  1730.    
  1731. End If 
  1732.  
  1733. Return 
  1734.  
  1735.  
  1736.  
  1737. _OPTION:
  1738.  
  1739. _INFOTMP$=_INFO$(_OPTION)+Chr$(10)
  1740.  
  1741. For _INFOTMP=0 To 15
  1742.    
  1743.    If _INFOTMP$=""
  1744.       
  1745.       _INFOTMP$(_INFOTMP)=""+Chr$(0)
  1746.       
  1747.    Else 
  1748.       
  1749.       _INFOTMP$(_INFOTMP)=Left$(_INFOTMP$,Instr(_INFOTMP$,Chr$(10)))
  1750.       _INFOTMP$=Right$(_INFOTMP$,Len(_INFOTMP$)-Len(_INFOTMP$(_INFOTMP)))
  1751.       
  1752.       _INFOTMP$(_INFOTMP)=_INFOTMP$(_INFOTMP)-Chr$(10)+Chr$(0)
  1753.       
  1754.       If _GROUPS(_OPTION)>0
  1755.          
  1756.          Inc _INFOTMP
  1757.          
  1758.          If _GROUP$(_OPTION)<>""
  1759.             _INFOTMP$(_INFOTMP)="Group: "+_GROUP$(_OPTION)+" "+Str$(1+_GROUP)-" "+"/"+Str$(_GROUPS(_OPTION))-" "+Chr$(0)
  1760.          Else 
  1761.             _INFOTMP$(_INFOTMP)="Group: "+Str$(1+_GROUP)-" "+"/"+Str$(_GROUPS(_OPTION))-" "+Chr$(0)
  1762.          End If 
  1763.          
  1764.          If _SUBGROUPS(_OPTION)>0
  1765.             
  1766.             Inc _INFOTMP
  1767.             
  1768.             If _SUBGROUP$(_OPTION)<>""
  1769.                _INFOTMP$(_INFOTMP)="Sub: "+_SUBGROUP$(_OPTION)+" "+Str$(1+_SUBGROUP)-" "+"/"+Str$(_SUBGROUPS(_OPTION))-" "+Chr$(0)
  1770.             Else 
  1771.                _INFOTMP$(_INFOTMP)="Sub: "+Str$(1+_SUBGROUP)-" "+"/"+Str$(_SUBGROUPS(_OPTION))-" "+Chr$(0)
  1772.             End If 
  1773.             
  1774.          End If 
  1775.          
  1776.       End If 
  1777.       
  1778.    End If 
  1779.    
  1780. Next 
  1781.  
  1782. Gui Set 2,7,1,Array(_INFOTMP$(0))
  1783.  
  1784. _GROUP:
  1785.  
  1786. If _GROUPS(_OPTION)=0
  1787.    
  1788.    Gui Set 2,4,-1,1
  1789.    Gui Set 2,4,1,0
  1790.    Gui Set 2,4,2,0
  1791.    Gui Set 2,4,0,0
  1792.    
  1793.    Gui Set 2,8,-1,1
  1794.    Gui Set 2,8,1,0
  1795.    Gui Set 2,8,2,0
  1796.    Gui Set 2,8,0,0
  1797.    
  1798. Else 
  1799.    
  1800.    Gui Set 2,4,-1,0
  1801.    Gui Set 2,4,1,0
  1802.    Gui Set 2,4,2,_GROUPS(_OPTION)-1
  1803.    Gui Set 2,4,0,_GROUP
  1804.    
  1805.    If _SUBGROUPS(_OPTION)=0
  1806.       
  1807.       Gui Set 2,8,-1,1
  1808.       Gui Set 2,8,1,0
  1809.       Gui Set 2,8,2,0
  1810.       Gui Set 2,8,0,0
  1811.       
  1812.    Else 
  1813.       
  1814.       Gui Set 2,8,-1,0
  1815.       Gui Set 2,8,1,0
  1816.       Gui Set 2,8,2,_SUBGROUPS(_OPTION)-1
  1817.       Gui Set 2,8,0,_SUBGROUP
  1818.       
  1819.    End If 
  1820.    
  1821. End If 
  1822.  
  1823.  
  1824.  
  1825. Gui Set 2,9,-1,1
  1826. Gui Set 2,9,1,0
  1827. Gui Set 2,9,2,0
  1828. Gui Set 2,9,0,0
  1829.  
  1830.  
  1831.  
  1832. _CURRENT=0
  1833.  
  1834. _CURRENT$=""
  1835.  
  1836.  
  1837.  
  1838. If _VALUE(_OPTION)=1 or _VALUE(_OPTION)=2 or _VALUE(_OPTION)=5
  1839.    
  1840.    
  1841.    
  1842.    Gui Set 2,1,-1,1
  1843.    Gui Set 2,2,-1,0
  1844.    Gui Set 2,3,-1,1
  1845.    
  1846.    If Length(10)>0
  1847.       If _LENGTH(_OPTION)=1
  1848.          _CURRENT=Peek(Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP))
  1849.       Else If _LENGTH(_OPTION)=2
  1850.          _CURRENT=Deek(Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP))
  1851.       Else If _LENGTH(_OPTION)=4
  1852.          _CURRENT=Leek(Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP))
  1853.       End If 
  1854.    Else 
  1855.       _CURRENT=0
  1856.    End If 
  1857.    
  1858.    If _VALUE(_OPTION)=5
  1859.       
  1860.       _CURRENT$=Hex$(_CURRENT)-"$"
  1861.       
  1862.       _CURRENT=0
  1863.       
  1864.       For A=0 To Len(_CURRENT$)-1
  1865.          
  1866.          If A=0
  1867.             _POWER=1
  1868.          Else 
  1869.             _POWER=1
  1870.             For _DUMMY=1 To A
  1871.                _POWER=_POWER*10
  1872.             Next 
  1873.          End If 
  1874.          
  1875.          _CURRENT=_CURRENT+Val("$"+Mid$(_CURRENT$,Len(_CURRENT$)-A,1))*_POWER
  1876.          
  1877.       Next 
  1878.       
  1879.    End If 
  1880.    
  1881.    _CURRENT$=Str$(_CURRENT)-" "+Chr$(0)
  1882.    
  1883.    Gui Set 2,2,0,Varptr(_CURRENT$)
  1884.    
  1885.    _DUMMY$=""+Chr$(0)
  1886.    
  1887.    If _CURRENT>-1 and _CURRENT<256
  1888.       If _VALUENAME$(_OPTION,_CURRENT)<>""
  1889.          Gui Set 2,3,0,Varptr(_VALUENAME$(_OPTION,_CURRENT))
  1890.       Else 
  1891.          Gui Set 2,3,0,Varptr(_DUMMY$)
  1892.       End If 
  1893.    Else 
  1894.       Gui Set 2,3,0,Varptr(_DUMMY$)
  1895.    End If 
  1896.    
  1897.    
  1898.    
  1899. Else If _VALUE(_OPTION)=3 or _VALUE(_OPTION)=4
  1900.    
  1901.    
  1902.    
  1903.    Gui Set 2,1,-1,0
  1904.    Gui Set 2,2,-1,1
  1905.    Gui Set 2,3,-1,1
  1906.    
  1907.    If Length(10)>0
  1908.       _CURRENT$=Peek$(Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),_LENGTH(_OPTION))
  1909.    Else 
  1910.       _CURRENT$=""
  1911.    End If 
  1912.    
  1913.    Gui Set 2,1,0,Varptr(_CURRENT$)
  1914.    
  1915.    
  1916.    
  1917. Else If _VALUE(_OPTION)=6 or _VALUE(_OPTION)=7
  1918.    
  1919.    
  1920.    
  1921.    Gui Set 2,1,-1,1
  1922.    Gui Set 2,2,-1,0
  1923.    Gui Set 2,3,-1,1
  1924.    
  1925.    If Length(10)>0
  1926.       
  1927.       If _VALUE(_OPTION)=6
  1928.          
  1929.          If _LENGTH(_OPTION)=1
  1930.             _CURRENT=Peek(Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP))
  1931.          Else If _LENGTH(_OPTION)=2
  1932.             _CURRENT=Deek(Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP))
  1933.          Else If _LENGTH(_OPTION)=4
  1934.             _CURRENT=Leek(Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP))
  1935.          End If 
  1936.          
  1937.          ' get pre-number 
  1938.          
  1939.          For _PRE=0 To 15
  1940.             
  1941.             If _PREVALUE(_OPTION,_PRE)=_CURRENT
  1942.                _CURRENT=_PRE
  1943.                Exit 
  1944.             End If 
  1945.             
  1946.          Next 
  1947.          
  1948.       Else If _VALUE(_OPTION)=7
  1949.          
  1950.          _CURRENT$=Peek$(Start(10)+_ADDRESS(_OPTION,_GROUP,_SUBGROUP),_LENGTH(_OPTION),Chr$(0))
  1951.          
  1952.          ' get pre-number 
  1953.          
  1954.          For _PRE=0 To 5
  1955.             
  1956.             If _PRESTRING$(_OPTION,_PRE)=_CURRENT$
  1957.                _CURRENT=_PRE
  1958.                Exit 
  1959.             End If 
  1960.             
  1961.          Next 
  1962.          
  1963.       End If 
  1964.       
  1965.    Else 
  1966.       _CURRENT=0
  1967.    End If 
  1968.    
  1969.    _CURRENT$=Str$(_CURRENT)-" "+Chr$(0)
  1970.    
  1971.    Gui Set 2,2,0,Varptr(_CURRENT$)
  1972.    
  1973.    _DUMMY$=""+Chr$(0)
  1974.    
  1975.    If _CURRENT>-1 and _CURRENT<256
  1976.       If _VALUENAME$(_OPTION,_CURRENT)<>""
  1977.          Gui Set 2,3,0,Varptr(_VALUENAME$(_OPTION,_CURRENT))
  1978.       Else 
  1979.          Gui Set 2,3,0,Varptr(_DUMMY$)
  1980.       End If 
  1981.    Else 
  1982.       Gui Set 2,3,0,Varptr(_DUMMY$)
  1983.    End If 
  1984.    
  1985.    
  1986.    
  1987.    _VALUENAMES=0
  1988.    
  1989.    For _VALUETMP=0 To 255
  1990.       
  1991.       If _VALUETMP=_CURRENT
  1992.          _VALUENAME=_VALUENAMES
  1993.       End If 
  1994.       
  1995.       If _VALUENAME$(_OPTION,_VALUETMP)<>""
  1996.          
  1997.          _VALUENAMETMP$(_VALUENAMES)=_VALUENAME$(_OPTION,_VALUETMP)
  1998.          _VALUENAMETMP(_VALUENAMES)=_VALUETMP
  1999.          
  2000.          Inc _VALUENAMES
  2001.  
  2002.       End If 
  2003.       
  2004.    Next 
  2005.    
  2006.    If _VALUENAMES=0
  2007.       
  2008.       Gui Set 2,9,-1,1
  2009.       Gui Set 2,9,1,0
  2010.       Gui Set 2,9,2,0
  2011.       Gui Set 2,9,0,0
  2012.       
  2013.    Else 
  2014.       
  2015.       Gui Set 2,9,-1,0
  2016.       Gui Set 2,9,2,_VALUENAMES-1
  2017.       Gui Set 2,9,0,_VALUENAME
  2018.       Gui Set 2,9,1,0
  2019.       
  2020.    End If 
  2021.    
  2022.    
  2023.    
  2024. End If 
  2025.  
  2026. Return 
  2027.  
  2028.  
  2029.  
  2030. _QUIT:
  2031.  
  2032. Erase 10
  2033. Erase 11
  2034. Erase 12
  2035. Erase 13
  2036.  
  2037. Gui Reset 
  2038.  
  2039. End 
  2040.  
  2041.  
  2042.  
  2043.  
  2044. Procedure _CHECKFILE[_BANK,_CHEAT]
  2045.    
  2046.    
  2047.    
  2048.    Shared _DIR$,_FILE$
  2049.    
  2050.    
  2051.    
  2052.    Examine Dir _DIR$+"Cheats"
  2053.    
  2054.    
  2055.    
  2056.    Repeat 
  2057.       
  2058.       _NEXT:
  2059.       
  2060.       _CHEAT$=Examine Next$
  2061.       
  2062.       If _CHEAT$<>"" and Upper$(Right$(_CHEAT$,4))=".CHT"
  2063.          
  2064.          If Object Type<0
  2065.             
  2066.             Wload _DIR$+"Cheats/"+_CHEAT$,_CHEAT
  2067.             
  2068.             
  2069.             
  2070.             _NAME$=""
  2071.             
  2072.             _AUTHOR$=""
  2073.             
  2074.             
  2075.             
  2076.             _ADR=0
  2077.             
  2078.             _TEST=False
  2079.             
  2080.             _TESTAND=True
  2081.             
  2082.             
  2083.             
  2084.             Repeat 
  2085.                
  2086.                
  2087.                
  2088.                _LINE$=Peek$(Start(_CHEAT)+_ADR,-1,Chr$(10))
  2089.                
  2090.                Add _ADR,Len(_LINE$)+1
  2091.                
  2092.                
  2093.                
  2094.                If _LINE$<>"" and Left$(_LINE$,1)<>";"
  2095.                   
  2096.                   
  2097.                   If Instr(_LINE$,"=")>0
  2098.                      
  2099.                      _COMMAND$=Upper$(Left$(_LINE$,Instr(_LINE$,"=")-1))
  2100.                      
  2101.                      While Left$(_COMMAND$,1)=" " or Left$(_COMMAND$,1)=Chr$(9)
  2102.                         _COMMAND$=Right$(_COMMAND$,Len(_COMMAND$)-1)
  2103.                      Wend 
  2104.                      
  2105.                      While Right$(_COMMAND$,1)=" " or Right$(_COMMAND$,1)=Chr$(9)
  2106.                         _COMMAND$=Left$(_COMMAND$,Len(_COMMAND$)-1)
  2107.                      Wend 
  2108.                      
  2109.                      
  2110.                      
  2111.                      _VALUE$=Right$(_LINE$,Len(_LINE$)-Instr(_LINE$,"="))
  2112.                      
  2113.                      While Left$(_VALUE$,1)=" " or Left$(_VALUE$,1)=Chr$(9)
  2114.                         _VALUE$=Right$(_VALUE$,Len(_VALUE$)-1)
  2115.                      Wend 
  2116.                      
  2117.                      While Right$(_VALUE$,1)=" " or Right$(_VALUE$,1)=Chr$(9)
  2118.                         _VALUE$=Left$(_VALUE$,Len(_VALUE$)-1)
  2119.                      Wend 
  2120.                      
  2121.                   Else 
  2122.                      
  2123.                      _COMMAND$=Upper$(_LINE$)
  2124.                      
  2125.                      _VALUE$=""
  2126.                      
  2127.                   End If 
  2128.                   
  2129.                   
  2130.                   
  2131.                   If _COMMAND$="NAME"
  2132.                      
  2133.                      _NAME$=_VALUE$
  2134.                      
  2135.                   Else If _COMMAND$="AUTHOR"
  2136.                      
  2137.                      _AUTHOR$=_VALUE$
  2138.                      
  2139.                   Else If _COMMAND$="FILENAME"
  2140.                      
  2141.                      _FILENAME$=Upper$(_VALUE$)
  2142.                      
  2143.                      If Instr(_FILENAME$,"*")>0
  2144.                         
  2145.                         _FILENAME$="@"+_FILENAME$+"@"
  2146.                         
  2147.                         _MID=Instr(_FILENAME$,"*")
  2148.                         
  2149.                         If Left$(Upper$("@"+_FILE$),_MID-1)=Left$(_FILENAME$,_MID-1) and Right$(Upper$("@"+_FILE$+"@"),Len(_FILENAME$)-_MID)=Right$(_FILENAME$,Len(_FILENAME$)-_MID)
  2150.                            _TEST=True
  2151.                         End If 
  2152.                         
  2153.                      Else If Instr(_FILENAME$,"#?")>0
  2154.                         
  2155.                         _FILENAME$="@"+_FILENAME$+"@"
  2156.                         
  2157.                         _MID=Instr(_FILENAME$,"#?")
  2158.                         
  2159.                         If Left$(Upper$("@"+_FILE$),_MID-1)=Left$(_FILENAME$,_MID-1) and Right$(Upper$("@"+_FILE$+"@"),Len(_FILENAME$)-_MID-1)=Right$(_FILENAME$,Len(_FILENAME$)-_MID-1)
  2160.                            _TEST=True
  2161.                         End If 
  2162.                         
  2163.                      Else 
  2164.                         
  2165.                         If Upper$(_FILE$)=_FILENAME$
  2166.                            _TEST=True
  2167.                         End If 
  2168.                         
  2169.                      End If 
  2170.                      
  2171.                   Else If _COMMAND$="SIZE"
  2172.                      
  2173.                      If Length(_BANK)=Val(_VALUE$)
  2174.                         _TEST=True
  2175.                      End If 
  2176.                      
  2177.                   Else If _COMMAND$="POSITION"
  2178.                      
  2179.                      _POSITION=Val(_VALUE$)
  2180.                      
  2181.                   Else If _COMMAND$="MATCH"
  2182.                      
  2183.                      _MATCH$=_VALUE$
  2184.                      
  2185.                      If Left$(_MATCH$,1)="$"
  2186.                         
  2187.                         _HEX$=Right$(_MATCH$,Len(_MATCH$)-1)
  2188.                         
  2189.                         _MATCH$=""
  2190.                         
  2191.                         For _ASC=1 To Len(_HEX$)/2
  2192.                            
  2193.                            _MATCH$=_MATCH$+Chr$(Val("$"+Mid$(_HEX$,1+(_ASC-1)*2,2)))
  2194.                            
  2195.                         Next 
  2196.                         
  2197.                      End If 
  2198.                      
  2199.                      If Peek$(Start(_BANK)+_POSITION,Len(_MATCH$))=_MATCH$
  2200.                         _TEST=True
  2201.                      End If 
  2202.                      
  2203.                   Else If _COMMAND$="AND"
  2204.                      
  2205.                      If _TEST=True
  2206.                         _TESTAND=True
  2207.                         _TEST=False
  2208.                      Else 
  2209.                         _TESTAND=False
  2210.                         _TEST=False
  2211.                      End If 
  2212.                      
  2213.                   Else If _COMMAND$="OR"
  2214.                      
  2215.                      If _TEST=True and _TESTAND=True
  2216.                         Pop Proc[_NAME$]
  2217.                      Else 
  2218.                         _TEST=False
  2219.                         _TESTAND=True
  2220.                      End If 
  2221.                      
  2222.                   Else If _COMMAND$="END"
  2223.                      
  2224.                      If _TEST=True and _TESTAND=True
  2225.                         Pop Proc[_NAME$]
  2226.                      Else 
  2227.                         Goto _NEXT
  2228.                      End If 
  2229.                      
  2230.                   End If 
  2231.                   
  2232.                   
  2233.                   
  2234.                End If 
  2235.                
  2236.                
  2237.                
  2238.             Until _ADR=>Length(_CHEAT)
  2239.             
  2240.             
  2241.             
  2242.          End If 
  2243.          
  2244.       End If 
  2245.       
  2246.    Until _CHEAT$=""
  2247.    
  2248.    
  2249.    
  2250.    Trap Erase _CHEAT
  2251.    
  2252.    
  2253.    
  2254. End Proc[-1]
  2255.  
  2256.  
  2257.  
  2258. Procedure _GETOPTIONS[_BANK,_CHEAT]
  2259.    
  2260.    
  2261.    
  2262.    _LOOP=False
  2263.    _REPEATS=0
  2264.    
  2265.    _BASE=0
  2266.    
  2267.    For _DUMMY1=0 To 47
  2268.       For _DUMMY2=0 To 255
  2269.          _VALUENAME$(_DUMMY1,_DUMMY2)=""
  2270.       Next 
  2271.    Next 
  2272.    
  2273.    For _OPTION=0 To _OPTIONS
  2274.       _OPTION$(_OPTION)=""
  2275.    Next 
  2276.    
  2277.    _OPTIONS=0
  2278.    
  2279.    _NAME$="(Unknown)"
  2280.    _AUTHOR$="(None)"
  2281.    
  2282.    
  2283.    
  2284.    If Length(_CHEAT)=0
  2285.       Pop Proc[-1]
  2286.    End If 
  2287.    
  2288.    
  2289.    
  2290.    Repeat 
  2291.       
  2292.       
  2293.       
  2294.       _LINE$=Peek$(Start(_CHEAT)+_ADR,-1,Chr$(10))
  2295.       
  2296.       Add _ADR,Len(_LINE$)+1
  2297.       
  2298.       
  2299.       
  2300.       If _LINE$<>"" and Left$(_LINE$,1)<>";"
  2301.          
  2302.          
  2303.          If Instr(_LINE$,"=")>0
  2304.             
  2305.             _COMMAND$=Upper$(Left$(_LINE$,Instr(_LINE$,"=")-1))
  2306.             
  2307.             While Left$(_COMMAND$,1)=" " or Left$(_COMMAND$,1)=Chr$(9)
  2308.                _COMMAND$=Right$(_COMMAND$,Len(_COMMAND$)-1)
  2309.             Wend 
  2310.             
  2311.             While Right$(_COMMAND$,1)=" " or Right$(_COMMAND$,1)=Chr$(9)
  2312.                _COMMAND$=Left$(_COMMAND$,Len(_COMMAND$)-1)
  2313.             Wend 
  2314.             
  2315.             
  2316.             
  2317.             _VALUE$=Right$(_LINE$,Len(_LINE$)-Instr(_LINE$,"="))
  2318.             
  2319.             While Left$(_VALUE$,1)=" " or Left$(_VALUE$,1)=Chr$(9)
  2320.                _VALUE$=Right$(_VALUE$,Len(_VALUE$)-1)
  2321.             Wend 
  2322.             
  2323.             While Right$(_VALUE$,1)=" " or Right$(_VALUE$,1)=Chr$(9)
  2324.                _VALUE$=Left$(_VALUE$,Len(_VALUE$)-1)
  2325.             Wend 
  2326.             
  2327.          Else 
  2328.             
  2329.             _COMMAND$=Upper$(_LINE$)
  2330.             
  2331.             _VALUE$=""
  2332.             
  2333.          End If 
  2334.          
  2335.          
  2336.          
  2337.          If _COMMAND$="NAME"
  2338.             
  2339.             _NAME$=_VALUE$
  2340.             
  2341.          Else If _COMMAND$="AUTHOR"
  2342.             
  2343.             _AUTHOR$=_VALUE$
  2344.             
  2345.          Else If _COMMAND$="OPTION"
  2346.             
  2347.             _OPTION$(_OPTIONS)=_VALUE$
  2348.             
  2349.             Inc _OPTIONS
  2350.             
  2351.             _INFO$(_OPTIONS-1)=_VALUE$
  2352.             
  2353.             _GROUPS(_OPTIONS-1)=_REPEATS
  2354.             
  2355.             _GROUP$(_OPTIONS-1)=_GROUP$
  2356.             
  2357.             _SUBGROUPS(_OPTIONS-1)=_SUBREPEATS
  2358.             
  2359.             _SUBGROUP$(_OPTIONS-1)=_SUBGROUP$
  2360.             
  2361.          Else If _COMMAND$="INFO"
  2362.             
  2363.             _INFO$(_OPTIONS-1)=_INFO$(_OPTIONS-1)+Chr$(10)+_VALUE$
  2364.             
  2365.          Else If _COMMAND$="ADDRESS"
  2366.             
  2367.             For _GROUP=0 To Max(0,_REPEATS-1)
  2368.                
  2369.                For _SUBGROUP=0 To Max(0,_SUBREPEATS-1)
  2370.                   
  2371.                   If Instr(_VALUE$,"+")>0 or Instr(_VALUE$,"-")>0 or Instr(_VALUE$,"*")>0 or Instr(_VALUE$,"/")>0 or Instr(Upper$(_VALUE$),"V")>0
  2372.                      
  2373.                      V=0
  2374.                      V$=""
  2375.                      _OPERATOR=0
  2376.                      
  2377.                      For I=1 To Len(_VALUE$)
  2378.                         
  2379.                         I$=Mid$(_VALUE$,I,1)
  2380.                         
  2381.                         If Instr("$0123456789abcdef",I$)>0
  2382.                            
  2383.                            V$=V$+I$
  2384.                            
  2385.                            If I=Len(_VALUE$)
  2386.                               
  2387.                               If _OPERATOR=0
  2388.                                  V=V+Val(V$)
  2389.                               Else If _OPERATOR=1
  2390.                                  V=V-Val(V$)
  2391.                               Else If _OPERATOR=2
  2392.                                  V=V*Val(V$)
  2393.                               Else If _OPERATOR=3
  2394.                                  V=V/Val(V$)
  2395.                               End If 
  2396.                               
  2397.                            End If 
  2398.                            
  2399.                         Else If I$="+" or I$="-" or I$="*" or I$="/"
  2400.                            
  2401.                            If _OPERATOR=0
  2402.                               V=V+Val(V$)
  2403.                            Else If _OPERATOR=1
  2404.                               V=V-Val(V$)
  2405.                            Else If _OPERATOR=2
  2406.                               V=V*Val(V$)
  2407.                            Else If _OPERATOR=3
  2408.                               V=V/Val(V$)
  2409.                            End If 
  2410.                            
  2411.                            If I$="+"
  2412.                               _OPERATOR=0
  2413.                            Else If I$="-"
  2414.                               _OPERATOR=1
  2415.                            Else If I$="*"
  2416.                               _OPERATOR=2
  2417.                            Else If I$="/"
  2418.                               _OPERATOR=3
  2419.                            End If 
  2420.                            
  2421.                            V$=""
  2422.                            
  2423.                         Else If Upper$(I$)="V"
  2424.                            
  2425.                            V$=Str$(V(_OPTIONS-1,_GROUP,_SUBGROUP,Val(Mid$(_VALUE$,I+1,1))))-" "
  2426.                            
  2427.                            I=I+1
  2428.                            
  2429.                         End If 
  2430.                         
  2431.                      Next 
  2432.                      
  2433.                      _ADDRESS=V+_BASE+_GROUP*_STEP+_SUBGROUP*_SUBSTEP
  2434.                      
  2435.                   Else 
  2436.                      
  2437.                      _ADDRESS=Val(_VALUE$)+_BASE+_GROUP*_STEP+_SUBGROUP*_SUBSTEP
  2438.                      
  2439.                   End If 
  2440.                   
  2441.                   _ADDRESS(_OPTIONS-1,_GROUP,_SUBGROUP)=_ADDRESS
  2442.                   
  2443.                Next 
  2444.                
  2445.             Next 
  2446.             
  2447.          Else If _COMMAND$="LENGTH"
  2448.             
  2449.             _LENGTH(_OPTIONS-1)=Val(_VALUE$)
  2450.             
  2451.             If _LENGTH(_OPTIONS-1)=1
  2452.                
  2453.                _MIN(_OPTIONS-1)=-127
  2454.                
  2455.                _MAX(_OPTIONS-1)=255
  2456.                
  2457.             Else If _LENGTH(_OPTIONS-1)=2
  2458.                
  2459.                _MIN(_OPTIONS-1)=-32767
  2460.                
  2461.                _MAX(_OPTIONS-1)=65535
  2462.                
  2463.             Else If _LENGTH(_OPTIONS-1)=4
  2464.                
  2465.                _MIN(_OPTIONS-1)=-2^31
  2466.                
  2467.                _MAX(_OPTIONS-1)=2^32
  2468.                
  2469.             End If 
  2470.             
  2471.          Else If _COMMAND$="VALUE"
  2472.             
  2473.             _VALUE(_OPTIONS-1)=Val(_VALUE$)
  2474.             
  2475.          Else If Left$(_COMMAND$,9)="VALUENAME"
  2476.             
  2477.             _VAL=Val(Right$(_COMMAND$,Len(_COMMAND$)-Instr(_COMMAND$,".")))
  2478.             
  2479.             _VAL=Max(0,Min(255,_VAL))
  2480.             
  2481.             _VALUENAME$(_OPTIONS-1,_VAL)=_VALUE$
  2482.             
  2483.          Else If Left$(_COMMAND$,8)="PREVALUE"
  2484.             
  2485.             _VAL=Val(Right$(_COMMAND$,Len(_COMMAND$)-Instr(_COMMAND$,".")))
  2486.             
  2487.             _VAL=Max(0,Min(15,_VAL))
  2488.             
  2489.             _PREVALUE(_OPTIONS-1,_VAL)=Val(_VALUE$)
  2490.             
  2491.          Else If Left$(_COMMAND$,9)="PRESTRING"
  2492.             
  2493.             _VAL=Val(Right$(_COMMAND$,Len(_COMMAND$)-Instr(_COMMAND$,".")))
  2494.             
  2495.             _VAL=Max(0,Min(15,_VAL))
  2496.             
  2497.             _PRESTRING$(_OPTIONS-1,_VAL)=_VALUE$
  2498.             
  2499.          Else If _COMMAND$="MIN"
  2500.             
  2501.             _MIN(_OPTIONS-1)=Val(_VALUE$)
  2502.             
  2503.          Else If _COMMAND$="MAX"
  2504.             
  2505.             _MAX(_OPTIONS-1)=Val(_VALUE$)
  2506.             
  2507.          Else If _COMMAND$="BASE"
  2508.             
  2509.             _BASE=Val(_VALUE$)
  2510.             
  2511.          Else If _COMMAND$="GROUP"
  2512.             
  2513.             If _LOOP=True
  2514.                _SUBGROUP$=_VALUE$
  2515.             Else 
  2516.                _GROUP$=_VALUE$
  2517.             End If 
  2518.             
  2519.          Else If _COMMAND$="DO"
  2520.             
  2521.             If _LOOP=True
  2522.                _SUBLOOP=True
  2523.                _SUBREPEATS=Val(_VALUE$)
  2524.             Else 
  2525.                _LOOP=True
  2526.                _REPEATS=Val(_VALUE$)
  2527.             End If 
  2528.             
  2529.          Else If _COMMAND$="STEP"
  2530.             
  2531.             If _LOOP=True
  2532.                _SUBSTEP=Val(_VALUE$)
  2533.             Else 
  2534.                _STEP=Val(_VALUE$)
  2535.             End If 
  2536.             
  2537.          Else If _COMMAND$="LOOP"
  2538.             
  2539.             If _SUBLOOP=True
  2540.                _SUBLOOP=False
  2541.                _SUBREPEATS=0
  2542.                _SUBSTEP=0
  2543.                _SUBGROUP$=""
  2544.             Else 
  2545.                _LOOP=False
  2546.                _REPEATS=0
  2547.                _STEP=0
  2548.                _GROUP$=""
  2549.             End If 
  2550.             
  2551.          Else If _COMMAND$="READ"
  2552.             
  2553.             V=Val(_VALUE$-"V")
  2554.             
  2555.             For _GROUP=0 To Max(0,_REPEATS-1)
  2556.                
  2557.                If _LENGTH(_OPTIONS-1)=1
  2558.                   V(_OPTIONS-1,_GROUP,_SUBGROUP,V)=Peek(Start(_BANK)+_ADDRESS(_OPTIONS-1,_GROUP,_SUBGROUP))
  2559.                Else If _LENGTH(_OPTIONS-1)=2
  2560.                   V(_OPTIONS-1,_GROUP,_SUBGROUP,V)=Deek(Start(_BANK)+_ADDRESS(_OPTIONS-1,_GROUP,_SUBGROUP))
  2561.                Else If _LENGTH(_OPTIONS-1)=4
  2562.                   V(_OPTIONS-1,_GROUP,_SUBGROUP,V)=Leek(Start(_BANK)+_ADDRESS(_OPTIONS-1,_GROUP,_SUBGROUP))
  2563.                End If 
  2564.                
  2565.             Next 
  2566.             
  2567.          End If 
  2568.          
  2569.       End If 
  2570.       
  2571.       
  2572.       
  2573.    Until _ADR=>Length(_CHEAT)
  2574.    
  2575.    
  2576.    
  2577.    Erase 12
  2578.    
  2579.    
  2580.    
  2581. End Proc[_NAME$]
  2582.  
  2583.  
  2584.  
  2585. Procedure _ERROR[_ERROR,_VALUE$]
  2586.    
  2587.    
  2588.    
  2589.    _BUTTON$="Ok"
  2590.    
  2591.    
  2592.    
  2593.    If _ERROR=1
  2594.       
  2595.       _ERROR$="Could not save file '"+_VALUE$+"'"
  2596.       
  2597.    Else If _ERROR=2
  2598.       
  2599.       _ERROR$="Found more than 256 occurences."+Chr$(10)+"Only the first 256 occurences will be shown."
  2600.       
  2601.    Else If _ERROR=3
  2602.       
  2603.       _ERROR$="No main file is loaded."
  2604.       
  2605.    Else If _ERROR=4
  2606.       
  2607.       _ERROR$="No swap file is loaded."
  2608.       
  2609.    Else If _ERROR=5
  2610.       
  2611.       _ERROR$="The requested value is too large."+Chr$(10)+"Continue anyway?"
  2612.       
  2613.       _BUTTON$="Yes|No"
  2614.       
  2615.    Else If _ERROR=6
  2616.       
  2617.       _ERROR$="Maximum value for this option is "+_VALUE$+"."
  2618.       
  2619.    Else If _ERROR=7
  2620.       
  2621.       _ERROR$="Minimum value for this option is "+_VALUE$+"."
  2622.       
  2623.    Else If _ERROR=8
  2624.       
  2625.       _ERROR$="SaveEd 1.00"+Chr$(10)+"(C) Copyright Rune Keller 1999"+Chr$(10)+"keller@vip.cybercity.dk"
  2626.       
  2627.    Else If _ERROR=9
  2628.       
  2629.       _ERROR$="Could not load file '"+_VALUE$+"'. The file is empty."
  2630.       
  2631.    End If 
  2632.    
  2633.    
  2634.    
  2635.    _DUMMY=Gui Req("Error",_ERROR$,_BUTTON$)
  2636.    
  2637.    
  2638.    
  2639. End Proc[_DUMMY]
  2640.  
  2641.  
  2642.  
  2643. Procedure _ABOUT
  2644.    
  2645.    
  2646.    
  2647.    _DUMMY=Gui Req("About","SaveEd 1.00"+Chr$(10)+"(C) Copyright Rune Keller 1999"+Chr$(10)+"keller@vip.cybercity.dk","Ok")
  2648.    
  2649.    
  2650.    
  2651. End Proc[_DUMMY]
  2652.